import { WebSocketServer } from "ws";
import Mock from 'mockjs'
const wss=new WebSocketServer({port:8080});
Mock.Random.date();
Mock.Random.city();
Mock.Random.integer(100,10000);


let id=1;
function getData(){
  //生成长度为1-10个不定长度的数据
  let {list}=Mock.mock({
    'list|5-10':[
      {
        date:'@date',
        address:'@city',
        num:'@integer(100,10000)',
      }
    ]
  });
  //给数组的每个元素都添加一次递增的id
  list=list.map((item)=>{
    return{
      ...item,id:id++
    };
  });
  return list
};

//循环发送数据

function sendMessage(ws){
  //得到一个1-5秒的不定时间
  const time=Math.round(Math.random()*4000+1000);
  //每个time的时间，通过socket向浏览器发送随机产生的数据
  setTimeout(()=>{
    const data=getData();
    ws.send(JSON.stringify(data));
    sendMessage(ws);
  },time);
};


//绑定连接成功的监听

wss.on('connection',(ws)=>{
  // 一旦连接成功, 开始循环发送数据(并不会立即发, 而是要延迟一定的时间)
  sendMessage(ws);
});

ws.onclose=()=>{
  console.log('关闭连接');
  clearInterval(ws.timer);
}

//绑定接收客户端消息的监听

ws.on('message',(data)=>{
  if(data.toString()==='ping'){
    console.log('接收心跳');
    ws.send('pong');
  }
})